#ifndef INTEGRITY_H
#define INTEGRITY_H

#include <QWidget>
#include <QTimer>


namespace Hydra_Integrity {
enum INTEGRIGY
{
    NORMAL,
    LOST
};

}


using namespace Hydra_Integrity;

class Integrity : public QWidget
{
    Q_OBJECT

public:
    Integrity(QWidget *parent = 0);
    void setIntegrityStatus(INTEGRIGY integrigy);                       // 设置完整性状态
    void setIntervel(quint16 intervel);                                 // 设置刷新频率

public slots:
    void refresh();


protected:
    void paintEvent(QPaintEvent *e);
    void resizeEvent(QResizeEvent *e);
    void initParam();                                                   // 初始化参数
    void drawTrainBody(QPainter *pPainter);                             // 绘制车身
    void drawWheel(QPainter *pPainter);                                 // 绘制车轮
    void drawSpace(QPainter *pPainter);                                 // 绘制车辆连接处



private:
    QPoint mCenter;                                                     // 控件中心点
    quint8 mTrainHeightProportion = 50;                                 // 列车图标高度占控件高度的百分比
    quint8 mTrainBodyHeightProportion = 80;                             // 列车图标车身高度占列车高度的百分比
    float mTrainHeight = 0;                                             // 列车图标高度
    quint8 mTrainTopLengthProportion = 175;                             // 列车图标上边界长度与图标高度的比例
    quint8 mTrainBottomLengthProportion = 240;                          // 列车图标下边界长度与图标高度的比例
    quint8 mWheelDiameterProportion = 35;                               // 图标车轮直径占车身高度的百分比
    quint8 mAxleDistProportion = 60;                                    // 2个车轮圆心距离占车身下边界长度的百分比
    INTEGRIGY mIntegrityStatus = LOST;                                  // 完整性状态
    QColor mNormalColor = QColor(45, 144, 51);                          // 正常状态颜色
    QColor mLostColor = QColor(189, 0, 0);                              // 丢失状态颜色
    quint16 mTopLength;                                                 // 上边界长度
    quint16 mBottomLength;                                              // 下边界长度
    quint8 mSpaceProportion = 6;                                        // 车厢连接处宽度占下边界长度的百分比
    QTimer mTimer;                                                      // 刷新定时器
};

#endif // INTEGRITY_H
